//
// Created by root on 19-10-17.
//

#ifndef OPENGLESPRO_GAME_STEP_1_H
#define OPENGLESPRO_GAME_STEP_1_H

// 对应vertex_game_step_1.glsl中的a_position的序列值
#define VERTEX_ATTR_INDEX_V1_POSITION 1
// 对应vertex_game_step_1.glsl中的a_color的序列值
#define VERTEX_ATTR_INDEX_V1_COLOR 2
// 每个顶点对应的分量个数，这里每个顶点用平面坐标(x,y)来表示，即两个分量
#define VERTEX_VEC_COUNT_V1_PER 2
// 顶点数据分量总个数
#define VERTEX_VEC_COUNT_V1_TOTAL 20
// 三角形数据分量总个数
#define VERTEX_VEC_COUNT_V1_TRIANGLE 12
// 中间线数据分量总个数
#define VERTEX_VEC_COUNT_V1_LINE 4

void OnSurfaceCreatedV1();

void OnSurfaceCreatedV1() {}

void OnSurfaceChangedV1();

void OnSurfaceChangedV1() {}

void OnDrawFrameV1();

void OnDrawFrameV1() {
    // 桌子的各顶点位置
    GLfloat tableVertices[VERTEX_VEC_COUNT_V1_TOTAL] = {
            // Triangle 1
            -0.5f, -0.5f,
            0.5f, 0.5f,
            -0.5f, 0.5f,

            // Triangle 2
            -0.5f, -0.5f,
            0.5f, -0.5f,
            0.5f, 0.5f,

            // Line 1
            -0.5f, 0.0f,
            0.5f, 0.0f,

            // Mallets
            0.0, -0.25f,
            0.0, 0.25f
    };
    glVertexAttribPointer(VERTEX_ATTR_INDEX_V1_POSITION, VERTEX_VEC_COUNT_V1_PER, GL_FLOAT,
                          GL_FALSE, 0, tableVertices);
    glVertexAttrib4f(VERTEX_ATTR_INDEX_V1_COLOR, 1.0, 1.0, 1.0, 1.0);
    // 使能顶点数组
    glEnableVertexAttribArray(VERTEX_ATTR_INDEX_V1_POSITION);
    glDrawArrays(GL_TRIANGLES, 0,
                 VERTEX_VEC_COUNT_V1_TRIANGLE / VERTEX_VEC_COUNT_V1_PER);
    glVertexAttrib4f(VERTEX_ATTR_INDEX_V1_COLOR, 1, 0, 0, 1);
    glLineWidth(3.0);
    glDrawArrays(GL_LINES, VERTEX_VEC_COUNT_V1_TRIANGLE / VERTEX_VEC_COUNT_V1_PER,
                 VERTEX_VEC_COUNT_V1_LINE / VERTEX_VEC_COUNT_V1_PER);
    glVertexAttrib4f(VERTEX_ATTR_INDEX_V1_COLOR, 0, 0, 1, 1);
    glDrawArrays(GL_POINTS, VERTEX_VEC_COUNT_V1_TRIANGLE / VERTEX_VEC_COUNT_V1_PER +
                            VERTEX_VEC_COUNT_V1_LINE / VERTEX_VEC_COUNT_V1_PER,
                 1); // 只绘制一个点
    glVertexAttrib4f(VERTEX_ATTR_INDEX_V1_COLOR, 1, 0, 0, 1);
    glDrawArrays(GL_POINTS, VERTEX_VEC_COUNT_V1_TRIANGLE / VERTEX_VEC_COUNT_V1_PER +
                            VERTEX_VEC_COUNT_V1_LINE / VERTEX_VEC_COUNT_V1_PER + 1,
                 1); // 只绘制第二个点
}

#endif //OPENGLESPRO_GAME_STEP_1_H
